package com.woniuxy.pxxt.dao;

import com.woniuxy.pxxt.dto.menu.MenuDto;
import com.woniuxy.pxxt.dto.menu.MenuFatherDto;
import com.woniuxy.pxxt.entity.Menu;
import com.woniuxy.pxxt.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <P> @Author: ideaAdmin
 * <P> TODO: Interface
 * <P> TODO:
 * <P> Date: 2022/3/14:13:31
 * <P> Description:
 */

public interface MenuDao {


    /**
     * <P>Author ideaAdmin
     * <P>TODO:根据用户id查询权限
     * <P>Date 22:03 2022/3/14
     * <P>* @param user
     * <P>* @return java.util.List<com.woniuxy.pxxt.entity.Menu>
     **/
    List<Menu> findUserMenu(User user);

    List<Menu> findUserMenuSon(@Param("userId") Integer userId,
                               @Param("menuId") Integer menuId);

    /**
     * <P>Author ideaAdmin
     * <P>TODO:根据角色id 返回已经拥有的权限id
     * <P>Date 13:49 2022/3/16
     * <P>* @param roleId
     * <P>* @return java.util.List<com.woniuxy.pxxt.dto.menu.MenuDto>
     **/
    List<Integer> findMenuByRoleId(Integer roleId);


    /**
     * <P>Author ideaAdmin
     * <P>TODO:返回所有的权限
     * <P>Date 13:49 2022/3/16
     * <P>* @param roleId
     * <P>* @return java.util.List<com.woniuxy.pxxt.dto.menu.MenuDto>
     **/
    List<MenuDto> findMenuAll();

    /**
     * <P>Author ideaAdmin
     * <P>TODO:根据角色id删除角色权限
     * <P>Date 14:28 2022/3/16
     * <P>* @param roleId
     * <P>* @return int
     **/
    int delByRoleId(Integer roleId);

    /**
     * <P>Author ideaAdmin
     * <P>TODO:根据角色id 增加权限
     * <P>Date 14:29 2022/3/16
     * <P>* @param roleId
    * @param menuIds
     * <P>* @return int
     **/
    int setMenu(@Param("roleId") Integer roleId,
                @Param("menuIds") List<Integer> menuIds);

    /**
     * <P>Author ideaAdmin
     * <P>TODO:返回所有的父级菜单
     * <P>Date 17:00 2022/3/16
     * <P> *
     * <P>* @return java.util.List<com.woniuxy.pxxt.dto.menu.MenuFatherDto>
     **/
    List<MenuFatherDto> findAllFidMenu();

    /**
     * <P>Author ideaAdmin
     * <P>TODO:增加子级菜单
     * <P>Date 17:06 2022/3/16
     * <P>* @param menu
     * <P>* @return int
     **/
    int addSonMenu(Menu menu);

    /**
     * <P>Author ideaAdmin
     * <P>TODO:增加父级id
     * <P>Date 19:28 2022/3/16
     * <P>* @param menu
     * <P>* @return int
     **/
    int addFatherMenu(Menu menu);
}
